{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-platform-directory-sql",
      "artifactVersion": "2023.10.13",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.directory",
          "org.nuxeo.ecm.directory.api",
          "org.nuxeo.ecm.directory.ldap",
          "org.nuxeo.ecm.directory.multi",
          "org.nuxeo.ecm.directory.sql",
          "org.nuxeo.ecm.directory.types.contrib",
          "org.nuxeo.ecm.directory.web"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.directory",
        "id": "grp:org.nuxeo.ecm.directory",
        "name": "org.nuxeo.ecm.directory",
        "parentIds": [
          "grp:org.nuxeo.ecm.platform"
        ],
        "readmes": [],
        "version": "2023.10"
      },
      "bundleId": "org.nuxeo.ecm.directory.sql",
      "components": [
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.directory.sql.SQLDirectoryFactory",
          "documentation": "\n    SQL-based implementation for NXDirectory\n  \n",
          "documentationHtml": "<p>\nSQL-based implementation for NXDirectory\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.directory.sql.SQLDirectoryFactory",
              "descriptors": [
                "org.nuxeo.ecm.directory.sql.SQLDirectoryDescriptor"
              ],
              "documentation": "\n      This extension point can be used to register new SQL-based\n      directories. The\n      extension can contain any number of directories\n      declarations of the form:\n      <code>\n    <directory name=\"userDirectory\">\n        <schema>vocabulary</schema>\n        <types>\n            <type>system</type>\n        </types>\n        <dataSource>java:/nxsqldirectory</dataSource>\n        <table>t</table>\n        <nativeCase>false</nativeCase>\n        <idField>username</idField>\n        <passwordField>password</passwordField>\n        <passwordHashAlgorithm>SSHA</passwordHashAlgorithm>\n        <autoincrementIdField>false</autoincrementIdField>\n        <createTablePolicy>on_missing_columns</createTablePolicy>\n        <dataFile>setup-mydb.csv</dataFile>\n        <dataFileCharacterSeparator>,</dataFileCharacterSeparator>\n        <querySizeLimit>1000</querySizeLimit>\n        <references>\n            <tableReference dataFile=\"user2group.csv\"\n                directory=\"groupDirectory\" field=\"groups\"\n                sourceColumn=\"userId\" table=\"user2group\" targetColumn=\"groupId\"/>\n        </references>\n        <permissions>\n            <permission name=\"Read\">\n                <group>mygroup</group>\n                <group>mygroup2</group>\n                <user>Administrator</user>\n            </permission>\n            <permission name=\"Write\">\n                <group>mygroup3</group>\n            </permission>\n        </permissions>\n    </directory>\n</code>\n\n      Here is the description for each field:\n      <ul>\n    <li>\n          schema - the name of the schema to be used for the directory\n          entries.\n        </li>\n    <li>\n          types - list of type to categorise directories.\n        </li>\n    <li>\n          dataSource - the dataSource name, as registered in the\n          application\n          server.\n        </li>\n    <li>\n          table - The name of the sql table where the directory data\n          will be\n          stored.\n        </li>\n    <li>\n          idField - the id field designs the primary key in the table,\n          used for\n          retrieving entries by id.\n        </li>\n    <li>\n          passwordField - the password field.\n        </li>\n    <li>\n          passwordHashAlgorithm - the hash used to encode the password\n          written\n          in the database, either empty (default), SSHA or SMD5.\n        </li>\n    <li>\n          autoincrementIdField - if this is set true, the SQLDirectory\n          will\n          fill the id field using a generated unique number,\n          otherwise the client\n          has to supply the id.\n        </li>\n    <li>\n          dataFile - file from which to populate the table; the\n          first line must\n          contain the column names. This can be a csv, tsv, psv file.\n          But you\n          must take care of the dataFileCharacterSeparator to specify the\n          character\n          separator\n        </li>\n    <li>\n          dataFileCharacterSeparator - character that separate each value\n          if\n          more than one character is set, the first one is gotten and other\n          are\n          skipped. The character is by default \",\" but you can set \";\" or\n          tabulation\n        </li>\n    <li>\n          createTablePolicy - one of \"never\", \"always\" or\n          \"on_missing_columns\"\n          if this is set to \"never\", the table will\n          never be created; if set to\n          \"always\", the table will be\n          created each time the application is\n          started; if set to\n          \"on_missing_columns\", the table will be created only\n          if the\n          schema declares some fields that are not present in the sql\n          table.\n        </li>\n    <li>\n          querySizeLimit - the maximum number of results that the\n          queries on\n          this directory should return; if there are more\n          results than this, an\n          exception will be raised.\n        </li>\n    <li>\n          nativeCase - false if table and column names should be used exactly\n          as specificed in the configuration and schemas (quoted), true if\n          they\n          should be converted to database-native case (usually\n          uppercase); the\n          default is false for backward-compatibility.\n        </li>\n</ul>\n\n      The references tag is used to define relations between\n      directories. (TODO:\n      describe the references types.)\n    \n",
              "documentationHtml": "<p>\nThis extension point can be used to register new SQL-based\ndirectories. The\nextension can contain any number of directories\ndeclarations of the form:\n</p><p></p><pre><code>    &lt;directory name&#61;&#34;userDirectory&#34;&gt;\n        &lt;schema&gt;vocabulary&lt;/schema&gt;\n        &lt;types&gt;\n            &lt;type&gt;system&lt;/type&gt;\n        &lt;/types&gt;\n        &lt;dataSource&gt;java:/nxsqldirectory&lt;/dataSource&gt;\n        &lt;table&gt;t&lt;/table&gt;\n        &lt;nativeCase&gt;false&lt;/nativeCase&gt;\n        &lt;idField&gt;username&lt;/idField&gt;\n        &lt;passwordField&gt;password&lt;/passwordField&gt;\n        &lt;passwordHashAlgorithm&gt;SSHA&lt;/passwordHashAlgorithm&gt;\n        &lt;autoincrementIdField&gt;false&lt;/autoincrementIdField&gt;\n        &lt;createTablePolicy&gt;on_missing_columns&lt;/createTablePolicy&gt;\n        &lt;dataFile&gt;setup-mydb.csv&lt;/dataFile&gt;\n        &lt;dataFileCharacterSeparator&gt;,&lt;/dataFileCharacterSeparator&gt;\n        &lt;querySizeLimit&gt;1000&lt;/querySizeLimit&gt;\n        &lt;references&gt;\n            &lt;tableReference dataFile&#61;&#34;user2group.csv&#34;\n                directory&#61;&#34;groupDirectory&#34; field&#61;&#34;groups&#34;\n                sourceColumn&#61;&#34;userId&#34; table&#61;&#34;user2group&#34; targetColumn&#61;&#34;groupId&#34;/&gt;\n        &lt;/references&gt;\n        &lt;permissions&gt;\n            &lt;permission name&#61;&#34;Read&#34;&gt;\n                &lt;group&gt;mygroup&lt;/group&gt;\n                &lt;group&gt;mygroup2&lt;/group&gt;\n                &lt;user&gt;Administrator&lt;/user&gt;\n            &lt;/permission&gt;\n            &lt;permission name&#61;&#34;Write&#34;&gt;\n                &lt;group&gt;mygroup3&lt;/group&gt;\n            &lt;/permission&gt;\n        &lt;/permissions&gt;\n    &lt;/directory&gt;\n</code></pre><p>\nHere is the description for each field:\n</p><ul><li>\nschema - the name of the schema to be used for the directory\nentries.\n</li><li>\ntypes - list of type to categorise directories.\n</li><li>\ndataSource - the dataSource name, as registered in the\napplication\nserver.\n</li><li>\ntable - The name of the sql table where the directory data\nwill be\nstored.\n</li><li>\nidField - the id field designs the primary key in the table,\nused for\nretrieving entries by id.\n</li><li>\npasswordField - the password field.\n</li><li>\npasswordHashAlgorithm - the hash used to encode the password\nwritten\nin the database, either empty (default), SSHA or SMD5.\n</li><li>\nautoincrementIdField - if this is set true, the SQLDirectory\nwill\nfill the id field using a generated unique number,\notherwise the client\nhas to supply the id.\n</li><li>\ndataFile - file from which to populate the table; the\nfirst line must\ncontain the column names. This can be a csv, tsv, psv file.\nBut you\nmust take care of the dataFileCharacterSeparator to specify the\ncharacter\nseparator\n</li><li>\ndataFileCharacterSeparator - character that separate each value\nif\nmore than one character is set, the first one is gotten and other\nare\nskipped. The character is by default &#34;,&#34; but you can set &#34;;&#34; or\ntabulation\n</li><li>\ncreateTablePolicy - one of &#34;never&#34;, &#34;always&#34; or\n&#34;on_missing_columns&#34;\nif this is set to &#34;never&#34;, the table will\nnever be created; if set to\n&#34;always&#34;, the table will be\ncreated each time the application is\nstarted; if set to\n&#34;on_missing_columns&#34;, the table will be created only\nif the\nschema declares some fields that are not present in the sql\ntable.\n</li><li>\nquerySizeLimit - the maximum number of results that the\nqueries on\nthis directory should return; if there are more\nresults than this, an\nexception will be raised.\n</li><li>\nnativeCase - false if table and column names should be used exactly\nas specificed in the configuration and schemas (quoted), true if\nthey\nshould be converted to database-native case (usually\nuppercase); the\ndefault is false for backward-compatibility.\n</li></ul>\n<p>\nThe references tag is used to define relations between\ndirectories. (TODO:\ndescribe the references types.)\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.directory/org.nuxeo.ecm.directory.sql/org.nuxeo.ecm.directory.sql.SQLDirectoryFactory/ExtensionPoints/org.nuxeo.ecm.directory.sql.SQLDirectoryFactory--directories",
              "id": "org.nuxeo.ecm.directory.sql.SQLDirectoryFactory--directories",
              "label": "directories (org.nuxeo.ecm.directory.sql.SQLDirectoryFactory)",
              "name": "directories",
              "version": "2023.10.13"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.directory/org.nuxeo.ecm.directory.sql/org.nuxeo.ecm.directory.sql.SQLDirectoryFactory",
          "name": "org.nuxeo.ecm.directory.sql.SQLDirectoryFactory",
          "requirements": [
            "org.nuxeo.ecm.directory.DirectoryServiceImpl"
          ],
          "resolutionOrder": 802,
          "services": [],
          "startOrder": 833,
          "version": "2023.10.13",
          "xmlFileContent": "<?xml version='1.0' encoding='UTF-8'?>\n<component name=\"org.nuxeo.ecm.directory.sql.SQLDirectoryFactory\">\n\n  <implementation class=\"org.nuxeo.ecm.directory.sql.SQLDirectoryFactory\"/>\n\n  <require>org.nuxeo.ecm.directory.DirectoryServiceImpl</require>\n\n  <documentation>\n    SQL-based implementation for NXDirectory\n  </documentation>\n\n  <extension-point name=\"directories\">\n    <documentation>\n      This extension point can be used to register new SQL-based\n      directories. The\n      extension can contain any number of directories\n      declarations of the form:\n      <code>\n        <directory name=\"userDirectory\">\n          <schema>vocabulary</schema>\n          <types>\n            <type>system</type>\n          </types>\n          <dataSource>java:/nxsqldirectory</dataSource>\n          <table>t</table>\n          <nativeCase>false</nativeCase>\n          <idField>username</idField>\n          <passwordField>password</passwordField>\n          <passwordHashAlgorithm>SSHA</passwordHashAlgorithm>\n          <autoincrementIdField>false</autoincrementIdField>\n          <createTablePolicy>on_missing_columns</createTablePolicy>\n          <dataFile>setup-mydb.csv</dataFile>\n          <dataFileCharacterSeparator>,</dataFileCharacterSeparator>\n          <querySizeLimit>1000</querySizeLimit>\n          <references>\n            <tableReference field=\"groups\" directory=\"groupDirectory\" table=\"user2group\" sourceColumn=\"userId\" targetColumn=\"groupId\" dataFile=\"user2group.csv\"/>\n          </references>\n          <permissions>\n            <permission name=\"Read\">\n              <group>mygroup</group>\n              <group>mygroup2</group>\n              <user>Administrator</user>\n            </permission>\n            <permission name=\"Write\">\n              <group>mygroup3</group>\n            </permission>\n          </permissions>\n        </directory>\n      </code>\n      Here is the description for each field:\n      <ul>\n        <li>\n          schema - the name of the schema to be used for the directory\n          entries.\n        </li>\n        <li>\n          types - list of type to categorise directories.\n        </li>\n        <li>\n          dataSource - the dataSource name, as registered in the\n          application\n          server.\n        </li>\n        <li>\n          table - The name of the sql table where the directory data\n          will be\n          stored.\n        </li>\n        <li>\n          idField - the id field designs the primary key in the table,\n          used for\n          retrieving entries by id.\n        </li>\n        <li>\n          passwordField - the password field.\n        </li>\n        <li>\n          passwordHashAlgorithm - the hash used to encode the password\n          written\n          in the database, either empty (default), SSHA or SMD5.\n        </li>\n        <li>\n          autoincrementIdField - if this is set true, the SQLDirectory\n          will\n          fill the id field using a generated unique number,\n          otherwise the client\n          has to supply the id.\n        </li>\n        <li>\n          dataFile - file from which to populate the table; the\n          first line must\n          contain the column names. This can be a csv, tsv, psv file.\n          But you\n          must take care of the dataFileCharacterSeparator to specify the\n          character\n          separator\n        </li>\n        <li>\n          dataFileCharacterSeparator - character that separate each value\n          if\n          more than one character is set, the first one is gotten and other\n          are\n          skipped. The character is by default \",\" but you can set \";\" or\n          tabulation\n        </li>\n        <li>\n          createTablePolicy - one of \"never\", \"always\" or\n          \"on_missing_columns\"\n          if this is set to \"never\", the table will\n          never be created; if set to\n          \"always\", the table will be\n          created each time the application is\n          started; if set to\n          \"on_missing_columns\", the table will be created only\n          if the\n          schema declares some fields that are not present in the sql\n          table.\n        </li>\n        <li>\n          querySizeLimit - the maximum number of results that the\n          queries on\n          this directory should return; if there are more\n          results than this, an\n          exception will be raised.\n        </li>\n        <li>\n          nativeCase - false if table and column names should be used exactly\n          as specificed in the configuration and schemas (quoted), true if\n          they\n          should be converted to database-native case (usually\n          uppercase); the\n          default is false for backward-compatibility.\n        </li>\n      </ul>\n      The references tag is used to define relations between\n      directories. (TODO:\n      describe the references types.)\n    </documentation>\n\n    <object class=\"org.nuxeo.ecm.directory.sql.SQLDirectoryDescriptor\"/>\n  </extension-point>\n\n</component>",
          "xmlFileName": "/OSGI-INF/SQLDirectoryFactory.xml",
          "xmlPureComponent": false
        }
      ],
      "fileName": "nuxeo-platform-directory-sql-2023.10.13.jar",
      "groupId": "org.nuxeo.ecm.platform",
      "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.directory/org.nuxeo.ecm.directory.sql",
      "id": "org.nuxeo.ecm.directory.sql",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: 1.6.0_20 (Sun Microsystems Inc.)\r\nBuilt-By: root\r\nBuild-Jdk: 17.0.10\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 0.0.0.SNAPSHOT\r\nExport-Package: org.nuxeo.ecm.directory.sql;core=split,org.nuxeo.ecm.dir\r\n ectory.sql.repository;core=split\r\nPrivate-Package: .\r\nBundle-ActivationPolicy: lazy\r\nBundle-ClassPath: .\r\nBundle-Localization: bundle\r\nBundle-Name: Nuxeo ECM SQL Directory\r\nBundle-RequiredExecutionEnvironment: JavaSE-1.6\r\nRequire-Bundle: org.nuxeo.ecm.directory.api;visibility:=reexport\r\nBundle-Vendor: Nuxeo\r\nEclipse-LazyStart: true\r\nEclipse-BuddyPolicy: dependent\r\nBundle-BuddyPolicy: dependent\r\nNuxeo-Component: OSGI-INF/SQLDirectoryFactory.xml\r\nImport-Package: au.com.bytecode.opencsv,javax.annotation;version=\"1.0\",j\r\n avax.resource;version=\"2.0.0\",javax.resource.cci;version=\"2.0.0\",javax.\r\n sql,org.apache.commons.lang,org.apache.commons.logging,org.nuxeo.common\r\n .utils,org.nuxeo.common.xmap.annotation,org.nuxeo.ecm.core;api=split,or\r\n g.nuxeo.ecm.core.api;api=split,org.nuxeo.ecm.core.api.impl,org.nuxeo.ec\r\n m.core.api.model,org.nuxeo.ecm.core.schema,org.nuxeo.ecm.core.schema.ty\r\n pes,org.nuxeo.ecm.core.storage,org.nuxeo.ecm.core.storage.sql,org.nuxeo\r\n .ecm.core.storage.sql.jdbc,org.nuxeo.ecm.core.storage.sql.jdbc.db,org.n\r\n uxeo.ecm.core.utils,org.nuxeo.ecm.directory,org.nuxeo.osgi,org.nuxeo.ru\r\n ntime,org.nuxeo.runtime.api,org.nuxeo.runtime.model,org.osgi.framework\r\nBundle-SymbolicName: org.nuxeo.ecm.directory.sql;singleton:=true\r\n\r\n",
      "maxResolutionOrder": 802,
      "minResolutionOrder": 802,
      "packages": [],
      "requirements": [
        "org.nuxeo.ecm.directory.api"
      ],
      "version": "2023.10.13"
    }
  ],
  "creationDate": 1712739574991,
  "key": "Nuxeo Platform-2023.10",
  "name": "Nuxeo Platform",
  "operations": [],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1712739574991,
  "version": "2023.10"
}